## 4.7. Typing Shortcuts

If you've been following along this tutorial at the terminal, you may be tired of typing the same things over and over again. It can be particularly annoying when you make a mistake and have to start over again. Here is where the shell really makes life easier. It doesn't make Unix as simple as a point-and-click interface, but it can help you work really fast in a command environment.

This section discusses command-line editing. The tips here work if your shell is `bash`, `ksh`, `tcsh`, or `zsh`. Command-line editing treats the last fifty or so lines you typed as a buffer in an editor. You can move around these lines and change them the way you'd edit a document. Every time you press the Return key, the shell executes the current line.

### 4.7.1. Word Completion

First, let's try something simple that can save you a lot of time. Type the following, without pressing the Return key:

>     $ cd /usr/inc

Now press the Tab key. The shell will add `lude` to complete the name of the directory /usr/include. Now you can press the Return key, and the command will execute.

The criteria for specifying a filename is "minimal completion." Type just enough characters to distinguish a name from all the others in that directory. The shell can find the name and complete it--up to and including a slash, if the name is a directory.

You can use completion on commands too. For instance, if you type:

>     $ ema

and press the Tab key, the shell will add the `cs` to make `emacs` (unless some other command in your path begins with `ema`).

What if there are multiple files that match what you've typed? If they all start with the same characters, the shell completes the word up to the point where names differ. Beyond that, most shells do nothing. `bash` has a neat enhancement: if you press the Tab key twice, it displays all the possible completions. For instance, if you enter:

>     $ cd /usr/l

and press the Tab key twice, `bash` prints something like:

>     lib         local

### 4.7.2. Moving Around Among Commands

Press the up arrow, and the command you typed previously appears. The up arrow takes you back through the command history, while the down arrow takes you forward. If you want to change a character on the current line, use the left or right arrow keys.

As an example, suppose you tried to execute:

>     $ mroe .bashrc
>     bash: mroe: command not found

Of course, you typed `mroe` instead of `more`. To correct the command, call it back by pressing the up arrow. Then press the left arrow until the cursor lies over the `o` in `mroe`. You could use the Backspace key to remove the `o` and `r` and retype them correctly. But here's an even neater shortcut: just press Ctrl-T. It will reverse `o` and `r`, and you can then press the Return key to execute the command.

Many other key combinations exist for command-line editing. But the basics shown here will help you quite a bit. If you learn the Emacs editor, you will find that most keys work the same way in the shell. And if you're a `vi` fan, you can set up your shell so that it uses `vi` key bindings instead of Emacs bindings. To do this in `bash`, `ksh`, or `zsh`, enter the command:

>     $ export VISUAL=vi

In `tcsh` enter:

>     $ setenv VISUAL vi

Copyright © 2001 O'Reilly & Associates. All rights reserved.